package com.ctvit.cch.ai.pojo.dto;

import org.apache.commons.lang3.StringUtils;

import jakarta.validation.constraints.NotBlank;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

/**
 * 自动分类DTO
 *
 * @author heyingcheng
 * @date 2025/07/30
 */
@Getter
@Setter
@ToString
public class AutoCategoryDTO {

    public static final String SYSTEM_MESSAGE_TEXT = "你是一名内容分类专家,根据我提供的具体分类,对给定的热点新闻稿/热点短视频的标题或简介进行分类,选出最符合的类别,且严格以单行纯JSON格式字符串文本回复,仅包含category_name(分类名称).";

    public static final String USER_MESSAGE_TEMPLATE = """
            1.标题:[%s]
            2.简介:[%s]
            3.具体分类:%s.
            4.额外需求:请你仔细分析我提供的标题或简介,结合上述分类的定义和范畴,判断其最匹配的分类.
            """;

    /**
     * 标题
     */
    @NotBlank(message = "标题不能为空")
    private String title;

    /**
     * 简介
     */
    private String summary;

    /**
     * 具体分类
     */
    @NotBlank(message = "具体分类不能为空")
    private String categoryNames;

    public AutoCategoryDTO() {
    }

    public AutoCategoryDTO(String title, String summary) {
        this.title = title;
        this.summary = summary;
    }
    
    public AutoCategoryDTO(String title, String summary, String categoryNames) {
        this.title = title;
        this.summary = summary;
        this.categoryNames = categoryNames;
    }

    public String getCategoryNames() {
        if (StringUtils.isNotEmpty(categoryNames)) {
            return categoryNames.replaceAll("\\s+", "");
        }
        return "时政政策,社会,教育,军事国防,应急管理,影视综艺,体育健身,娱乐,财经,科学,历史与文化,健康医疔,法律司法,房产,旅游摄影,育儿,美食,三农,汽车,职场,情感,科技数码,时尚美妆,家居家装,宠物,游戏,动漫";
    }

}
